package com.xingzhi.commonutils;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.HashMap;
import java.util.Map;

/**
 * Create with Intellij IDEA.
 * Description：统一返回结果的类
 * User:Zero
 * Date:2021/3/23
 * Time:16:51
 */
//lombok的注解
@Data
public class R {
        @ApiModelProperty(value = "是否成功")
        private Boolean success;

        @ApiModelProperty(value = "返回码")
        private Integer code;

        @ApiModelProperty(value = "返回消息")
        private String message;

        @ApiModelProperty(value = "返回数据")
        private Map<String, Object> data = new HashMap<String, Object>();

        //私有化构造方法
        private R(){}

        //链式编程   R.ok().success()....

        public static R ok(){
            R r = new R();
            r.setSuccess(true);
            r.setCode(ResultCode.SUCCESS);
            r.setMessage("成功");
            return r;
        }

        public static R error(){
            R r = new R();
            r.setSuccess(false);
            r.setCode(ResultCode.ERROR);
            r.setMessage("失败");
            return r;
        }
        //当前类的对象
        public R success(Boolean success){
            this.setSuccess(success);
            return this;
        }

        public R message(String message){
            this.setMessage(message);
            return this;
        }

        public R code(Integer code){
            this.setCode(code);
            return this;
        }

        public R data(String key, Object value){
            this.data.put(key, value);
            return this;
        }

        public R data(Map<String, Object> map){
            this.setData(map);
            return this;
        }
}

